subkey algorithms